package cn.com.zero.front.auth.service;

import cn.com.zero.common.auth.security.po.AuthUserPO;
import cn.com.zero.front.auth.po.AuthUserInfoPO;
import org.springframework.web.multipart.MultipartFile;

/**
 * @author liuxh
 * @version 1.0.0
 * @Description 用户SERVICE接口
 * @createTime 2023/4/3 16:17
 */
public interface IUserService {

    /**
     * 查询用户个性信息
     *
     * @param userId 用户ID
     * @return 获取用户信息
     */
    AuthUserInfoPO getAuthUserInfoPO(String userId);

    /**
     * 修改头像
     *
     * @param userId 用户ID
     * @param avatar 头像文件
     * @return 文件相对路径
     */
    String updateAvatar(String userId, MultipartFile avatar);

    /**
     * 修改用户名
     *
     * @param userId   用户ID
     * @param userName 用户名
     */
    void updateUserName(String userId, String userName);

    /**
     * 修改用户手机号
     *
     * @param userId      用户ID
     * @param mobilePhone 手机号 明文
     */
    void modifyMobile(String userId, String mobilePhone);

    /**
     * 依据手机号查询用户
     *
     * @param mobilePhone 手机号 明文
     * @return 用户
     */
    AuthUserPO queryUserByMobilePhone(String mobilePhone);

    /**
     * 重置登录密码
     *
     * @param userId   用户ID
     * @param password 密码
     */
    void resetLoginPwd(String userId, String password);

    /**
     * 解锁用户清空登录错误次数
     *
     * @param userId 用户ID
     */
    void unlockCustomerByUserId(String userId);

    /**
     * 用户注销申请
     *
     * @param phone  紧急联系电话
     * @param userId 用户ID
     */
    void applyCancellation(String phone, String userId);
}
